#include <stdbool.h>

// should be removed by preprocessor

struct hybird {
    bool b;
    char c; 
    short s;
    int i; 
    long l;
    char* str;
};

enum color {
    RED,
    YELLOW,
    GREEN,
    BULE,
    BLACK,
    WHITE
};

void print(char* s, ...) {
    return ;
}

void func(signed char ch, unsigned int in, enum color clr) {

    struct hybird arr[50];

    if(in == 0b10101) {
        for(int i = 0; i < 50; i++) {
            arr[i].b = true;
            arr[i].c = 'a';
            arr[i].s = 123;
            arr[i].i = 1234;
            arr[i].l = 12345;
            break;
        }
        asm("nop");
    } else {
        int i = 0;
        while(i <= 49) {
            (arr+i)->b = false;
            (arr+i)->c = '\n';
            (arr+i)->s = 0xABC;
            (arr+i)->i = 0xABCD;
            (arr+i)->l = 0xABCDE;
            i++;
            continue;
        }
    }
    
    ch = '\0';
    ch = '\'';
    ch = '\"';

    long n = sizeof(struct hybird);

    int a = 0, b = 1, c = 2;
    int* p = &n;

    switch (clr) {
        case RED:
            +a; 
            -b; 
            ~c; 
            !a; 
            &a; 
            *p;
            break;
        case YELLOW:
            a + b;
            a - b;
            a * b;
            a / b;
            a % b;
            break;
        case BULE:
            a < b;
            a <= b;
            a > b;
            a >= b;
            a == b;
            a != b;
            // logical
            a && b;
            a || b;
            // bitwise
            a | b;
            a & b;
            a ^ b;
            break;
        case GREEN:
            // shift
            a << b;
            a >> b;
            // assignment
            a = b;
            a += b;
            a -= b;
            a *= b;
            a /= b;
            a %= b;
            a &= b;
            a |= b;
            a ^= b;
            a <<= b;
            a >>= b;
            // ternary
            a = a ? b : c;
            break;
        default:
            hybird_print("There is a test for yecc.\n");
            break;
    }
    
    return ;
}
